package com.jvm;

/**
 * @author: 李德才
 * @description:
 * @create: 2021-06-21 19:48
 **/
public class JVM_17_JVM_Runtime_Data_Area {
    public static void main(String[] args) {
        int i = 8;
        // i = i++;
        i = ++i;
        System.err.println(i);
    }

    /**
     * **** i = i++; ****
     * 0 bipush 8 //将8放在栈中
     * 2 istore_1 //将8放在局部变量表为1的位置,就是 i ，这时 i = 8
     * 3 iload_1 //将局部变量表位置为1的值拿出来，压栈
     * 4 iinc 1 by 1 // 局部变量表位置为1的数 +1 ，此时 i = 9，但是栈里面是8
     * 7 istore_1 // 将8放在局部变量表为1的位置,就是 i ，这时 i = 8
     * 8 getstatic #16 <java/lang/System.err>
     * 11 iload_1 // 将局部变量表为1的位置压栈
     * 12 invokevirtual #22 <java/io/PrintStream.println> //输出
     * 15 return // 返回，结束
     **/

    /**
     * *** i = ++i; ***
     * 0 bipush 8 //将8放在栈中
     * 2 istore_1 //将8放在局部变量表为1的位置,就是 i ，这时 i = 8
     * 3 iinc 1 by 1 // 局部变量表位置为1的数 +1 ，此时 i = 9，但是栈里面是8
     * 6 iload_1 //将局部变量表位置为1的值拿出来，压栈 ,此时局部变量表和栈里面都是9
     * 7 istore_1 // 将9放在局部变量表为1的位置,就是 i ，这时 i = 9
     * 8 getstatic #2 <java/lang/System.err>
     * 11 iload_1 // 将局部变量表为1的位置压栈
     * 12 invokevirtual #3 <java/io/PrintStream.println> //输出
     * 15 return // 返回，结束
     **/
}
